home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Environments / Open Prolog 1.0.3d33 / Dialogs / Sample Dialog Code < prev    next >
Text File  |  1996-04-16  |  4KB  |  93 lines

  1. simple_modal_dialog :-
  2.         purge_events(dialog),
  3.         new_dialog('Dialog Samples',128,Reference),
  4.         wait_for_event(dialog,[Reference,Item]),(Item==1;Item==2),
  5.         (Item==1 /* 1 is the OK button */ -> beep;true),
  6.         close_dialog(Reference).
  7.  
  8. smarter_modal_dialog :-
  9.         purge_events(dialog),
  10.         new_dialog('Dialog Samples','Smart Dialog',Reference),
  11.         wait_for_event(dialog,[Reference,Item]),
  12.         process_smarter_dialog_hits(Item,Reference),
  13.         close_dialog(Reference).
  14.  
  15. process_smarter_dialog_hits(1,Reference) :- %1 is the Beep button
  16.         %disable controls while beeping…
  17.         set_dialog_property([Reference,1],active(false)),
  18.         set_dialog_property([Reference,2],active(false)),
  19.         set_dialog_property([Reference,4],active(false)),
  20.         beep, %give one beep anyway
  21.         current_dialog_property([Reference,4],value(X)), %4 is the check box
  22.         (X==1->beep;true),
  23.         %re-enable the controls…
  24.         set_dialog_property([Reference,1],active(true)),
  25.         set_dialog_property([Reference,2],active(true)),
  26.         set_dialog_property([Reference,4],active(true)),
  27.         wait_for_event(dialog,[Reference,Item]),!,
  28.         process_smarter_dialog_hits(Item,Reference).
  29. process_smarter_dialog_hits(2,Reference). %2 is the Cancel button
  30. process_smarter_dialog_hits(4,Reference) :- %4 is the Check Box button
  31.         toggle([Reference,4]),
  32.         wait_for_event(dialog,[Reference,Item]),!,
  33.         process_smarter_dialog_hits(Item,Reference).
  34.  
  35. toggle(Ref) :-
  36.         current_dialog_property(Ref,value(V)),
  37.         toggle_value(V,I),
  38.         set_dialog_property(Ref,value(I)).
  39.  
  40. toggle_value(0,1).
  41. toggle_value(1,0).
  42.  
  43. modeless_dialogs :-
  44.         purge_events(dialog),
  45.         new_dialog('Dialog Samples','Plus',PlusRef),
  46.         new_dialog('Dialog Samples','Minus',MinusRef),
  47.         wait_for_event(dialog,[Reference,Item]),
  48.         process_modeless_dialog_hits(Item,Reference,PlusRef,MinusRef),
  49.         close_dialog(MinusRef),
  50.         close_dialog(PlusRef).
  51.  
  52. process_modeless_dialog_hits(1,_,_,_) :- !. % Item 1 - the ‘Close’ button
  53. process_modeless_dialog_hits(1000,_,_,_) :- !. % Close Box or Close Menu
  54. process_modeless_dialog_hits(_,Ref,PlusRef,MinusRef) :- %all other items
  55.         current_dialog_property([Ref,2],value(N1)),
  56.         current_dialog_property([Ref,4],value(N2)),
  57.         (number(N1),number(N2)->
  58.         (Ref==PlusRef->V is N1+N2;Ref==MinusRef->V is N1-N2);
  59.         V = 'value!'),
  60.         set_dialog_property([Ref,6],value(V)),
  61.         wait_for_event(dialog,[Reference,Item]),
  62.         process_modeless_dialog_hits(Item,Reference,PlusRef,MinusRef).
  63.  
  64. modeless_beep_dialog :-
  65.         new_dialog('Dialog Samples','Modeless Beep',_).
  66.  
  67. handle_dialog_interrupt([D|Spec]) :-
  68.         current_dialog_property([D],name('Beeper')),
  69.         process_modeless_beep_dialog([D|Spec]).
  70.  
  71. process_modeless_beep_dialog([_,1]) :- beep.
  72. process_modeless_beep_dialog([D,1000]) :- close_dialog(D).
  73.  
  74. popup_modal_dialog :-
  75.         purge_events(dialog),
  76.         new_dialog('Dialog Samples',133,Reference),
  77.         wait_for_event(dialog,[Reference,Item]),
  78.         process_popup_dialog_hits(Item,Reference),
  79.         close_dialog(Reference).
  80.  
  81. process_popup_dialog_hits(2,Reference) :-
  82.         current_dialog_property([Reference,2],value(V)),
  83.         set_dialog_property([Reference,6],value(V)),
  84.         wait_for_event(dialog,[Reference,Item]),!,
  85.         process_popup_dialog_hits(Item,Reference).
  86. process_popup_dialog_hits(3,Reference) :-
  87.         current_dialog_property([Reference,3],value(V)),
  88.         set_dialog_property([Reference,5],value(V)),
  89.         wait_for_event(dialog,[Reference,Item]),!,
  90.         process_popup_dialog_hits(Item,Reference).
  91. process_popup_dialog_hits(1,Reference). %1 is the OK button
  92.  
  93.